/*
**  Apache License, Version 2.0
**  Notes:Use this command to anonymously check out the latest project source code:
**  Non-members may check out a read-only working copy anonymously over HTTP.
**  SVN checkout http://YHHCatiaBaseUtlWsp.googlecode.com/svn/trunk/ 
**
**  Author:		Kevin Yang
**  Email:		Bigearrabbit@qq.com
**
**  DATE:		2013-4-4
**
**  File Name:	YHHSpecAttrAccess.h
**
**  Notes:
** 
*/
#ifndef YHHSpecAttrAccess_H
#define YHHSpecAttrAccess_H

// Local Framework
#include "YHHCatiaBaseUtl.h"

// System Framework
#include "CATBaseUnknown.h"
#include "CATUnicodeString.h"
#include "CATISpecObject.h"
#include "CATISpecAttrKey.h"

//predeclare
class CATISpecAttrAccess;


/// <summary>SpecAttrAccess</summary>
/// <remarks></remarks>
/// <author>Kevin Yang</author>
/// <date>2013-4-4</date>
class ExportedByYHHCatiaBaseUtl YHHSpecAttrAccess:CATBaseUnknown
{
	CATDeclareClass;

public:

	// Standard constructors and destructors
	// -------------------------------------
	YHHSpecAttrAccess ();
	virtual ~YHHSpecAttrAccess ();
public://main
	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <return>CATISpecAttrKey</return>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	CATISpecAttrKey * GetAttrKey(const char* iName)const;

	/// <summary>Set CATISpecAttrAccess Ptr</summary>
	/// <param name="ipValue">CATISpecAttrAccess Ptr</param>
	/// <return></return>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	void SetCATISpecAttrAccessPtr(CATISpecAttrAccess * ipValue);

public://Get and set

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="oList">List</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2014-1-6</date>
	HRESULT GetListValue(const char* iName, CATListValCATISpecObject_var & oList) const;

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="oppList">List</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2014-1-6</date>
	HRESULT GetListValue( const char* iName, CATListValCATBaseUnknown_var ** oppList ) const;

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="oValue">Out Value</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	HRESULT GetSpecValue(const char* iName,CATISpecObject_var & oValue) const;

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="oValue">Out Value</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-5</date>
	HRESULT GetValue(const char* iName,CATUnicodeString & oValue) const;


	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="oValue">Out Value</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	HRESULT GetValue(const char* iName,double & oValue) const;


	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="oValue">Out Value</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	HRESULT GetValue(const char* iName,int & oValue) const;

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="iList">List</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2014-1-6</date>
	HRESULT SetListValue( const char* iName ,const CATListValCATISpecObject_var & iList );

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="iList">List</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2014-1-6</date>
	HRESULT SetListValue( const char* iName ,const CATListValCATBaseUnknown_var & iList );

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="iValue">input Value</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	HRESULT SetSpecValue(const char* iName,const CATISpecObject_var & iValue);

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="iValue">input Value</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-5</date>
	HRESULT SetValue(const char* iName,const CATUnicodeString & iValue);

	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="iValue">input Value</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	HRESULT SetValue(const char* iName,const double & iValue);
	/// <summary>Get Parameter</summary>
	/// <param name="iName">Input Name</param>
	/// <param name="iValue">input Value</param>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	HRESULT SetValue(const char* iName,const int & iValue);

private:
	CATISpecAttrAccess				*	_piSpecAttrAccessOnCC;

};

#endif
